A Database Management System (“DBMS”) runs on a computer system that may include one or more computers. The computer system has resources, such as the central processing unit (“CPU”), memory, storage, input/output (“I/O”), etc., that are shared between the DBMS and other programs or systems that are running on the computer system. The DBMS itself may have resources that may be shared among different DBMS tasks that are executing at the same time. The assignment of resources among DBMS tasks is sometimes based on prioritizing tasks, with higher priority tasks being more likely, at any given time, to be assigned a greater share of the DBMS and computer system resources.
The DBMS may have service level goals (“SLGs”), which are predefined sets of one or more performance criteria that are to be satisfied during execution of one or more queries. Each workload group, which are sets of queries or other database requests that are grouped together because of one or more parameters, may have its own set of SLGs that are particular to that workload group. A database administrator (“DBA”) may have parameters and “performance knobs” that can be adjusted to dedicate larger or smaller portions of computer system and DBMS resources based on ad hoc needs of clients. Making these adjustments can be a challenge especially if the parameters and performance knobs are numerous or if they do not relate directly to actual business goals for the workloads themselves or if the settings established for one workload can contradict the settings established for other workloads.
Commercial databases often tend to mix multiple business units into a single system to maximize economy of scale benefits. This is especially useful when one business unit would otherwise only need a fraction of the smallest-sized system to meet its needs.
For example, a single international database system may support the operations of many different business units simultaneously, where each business unit is responsible for supporting the costs of that business unit's share of the system. Because the business unit pays for that share of the system, it expects to have access to that share of the system, at least for times when it has active demand for the system. When the business unit does not have active demand for the system, in most cases the business unit shares its idle resources with other active business units until its demand returns, to help maximize the return on the system as a whole.
Within each business unit, a mix of different priority workloads may be present. Similarly, other large database systems may find themselves sharing a single system across different business units, especially in the cases of mergers and acquisitions, where delineating usage between business units can be even more important.
Effectively sharing system resources across different business units while maintaining the priority directives outlined within each individual business unit, especially those defined based on Service Level Goal (SLG) directives, is a challenge.